Elder’s Force Index (EFI)

Table of Contents

Elder’s Force Index (EFI)

Category: Volume-based Type: Momentum oscillator Used for: Trend confirmation, divergence spotting, breakout validation


Overview

Elder’s Force Index (EFI) is a technical indicator developed by Dr. Alexander Elder. It combines price change and volume into a single value to measure the strength of market moves. Unlike oscillators that rely solely on price (e.g. RSI, MACD), EFI incorporates volume, which makes it particularly useful in identifying the conviction behind market movements.


Formula

There are two core steps in calculating EFI:

1. Raw Force Index

FI = (Close_today - Close_yesterday) * Volume_today

This gives a one-period measurement of price momentum weighted by volume.

2. Smoothed Force Index (EFI)

To reduce noise, apply an Exponential Moving Average (EMA):

EFI_n = EMA(FI_raw, n)

Where n is a configurable smoothing length (default: 13).


Typical Use Cases

1. Trend Confirmation

2. Divergence Detection

3. Zero Line Cross


Indie Implementation (Lang v5)

#education purpose
# indie:lang_version = 5
from indie import indicator, plot, color, param, MutSeriesF
from indie.algorithms import Ema
@indicator("Elder's Force Index", overlay_main_pane=False)
@param.int('length', default=13, min=1, title="Length")
@plot.line(id='#plot_0')
def Main(self, length):
    # Create a mutable series for the Force Index calculation
    fi_series = MutSeriesF.new((self.close[0] - self.close[1]) * self.volume[0])
    # Apply exponential moving average (EMA) to smooth the Force Index
    efi = Ema.new(fi_series, length)[0]
    # Return the plotted Force Index with a white color line
    return plot.Line(efi, color=color.WHITE)

Explanation:


Pine Script Equivalent

//education purpose
//@version=3
// Author: Sheldon Patnett
// Discord: Sheldon#7775  / https://discord.gg/t2JTnAa
study("Elder's Force Index Function (with source)")
// User-defined input for EMA length
length = input(defval=13, title="Length")
// Function to calculate Elder's Force Index
pine_efi(len) =>
    // Calculate the raw Force Index value
    src = ((close - close[1]) * volume)
    // Apply EMA to smooth the Force Index
    efi = ema(src, len)
// Plot the Elder's Force Index with white color
plot(pine_efi(length), color=#ffffff)

Key Differences vs Indie:


Strategy Tips


Limitations


Example Pattern Recognition

Bullish Setup:

Bearish Setup: